<?php

/**
 * LacunasController
 * 
 * @author
 * @version 
 */

require_once 'Zend/Controller/Action.php';

class LacunasController extends Zend_Controller_Action {
	
	protected $_acl;
	protected $_session;
	


	public function init() {
		$config = Zend_Registry::get ( 'config' );
		$this->_acl = $this->getFrontController ()->getParam ( 'acl' );
		$this->_session = new Zend_Session_Namespace ( $config->session->namespace );
		$this->usuario = $this->_session->storage;
		$this->textosDAO = new Textos ( );
		
		if (! $this->usuario ) {
			$this->perfil = "visitante";
		} else {
			$this->perfil = $this->usuario->perfil;
		}
		$this->view->perfil = $this->perfil;
		$this->view->aba = 'admintextos';
	}
	
	
	public function preDispatch() {
	 if (! Zend_Auth::getInstance ()->hasIdentity ()) {
			$this->view->logado = 0;
		} else {
			$config = Zend_Registry::get ( 'config' );
			$this->_session = new Zend_Session_Namespace ( $config->session->namespace );
			$this->_usuario = $this->_session->storage;
			$this->view->logado = 1;
		}
	}
	
	public function administrarAction() {
		$params = new Zend_Filter_Input ( null, null, $this->getRequest ()->getParams () );
		$textoDAO = new Textos ( );
		$texto = $textoDAO->find ( $params->id )->current ();
		
		$recursosDAO = new Recursos();
		$recursos = $recursosDAO->findByTexto($texto->id);		
		
		$this->view->texto = $texto;
		$this->view->texto_sel = utf8_encode($texto->texto);
		//$this->view->texto_sel = utf8_encode($texto->texto);
		$this->view->recurso_associacao = $textoDAO->hasRecurso('lacunas_associacao', $texto->id);
		
		$this->usuario = $this->_session->storage;

			
	}
	
	public function inserirAction() {
		
		if (! $this->getRequest ()->isPost ()) {
			$this->_redirect ( './' );
		}
		
		$textoDAO = new Textos ( );
		
		$inicio = $this->getRequest ()->getParam ( 'inicio' );
		$fim = $this->getRequest ()->getParam ( 'fim' );
		
		$texto = $textoDAO->find ( $this->getRequest ()->getParam ( 'id_texto' ) )->current ();
		
		$this->view->acao = "registrar";
		$this->view->id_texto = $texto->id;
		
		$tex = $texto->texto;
		//$tex = utf8_encode($texto->texto);
		$texto = $this->view->Br2nl($tex);
		
		$texto = $this->view->Br2nl($texto);
		
		$this->view->palavra = mb_substr ( $texto , $inicio, ($fim - $inicio) ) ;
		$this->view->inicio = $inicio;
		$this->view->fim = $fim;
		

		
		$this->render ( 'formulario' );
	}
	
	public function editarAction() {
		
		$lacunasDAO = new Lacunas();
		
		$lacuna = $lacunasDAO->find($this->getRequest()->getParam('id'))->current();
		
		if ($lacuna) {
			$this->view->id_texto = $lacuna->id_texto;
			$this->view->palavra = $lacuna->palavra;
			$this->view->inicio = $lacuna->inicio;
			$this->view->fim = $lacuna->fim;
			$this->view->lacuna = $lacuna;
		}
		
		$this->view->acao = "editar";
		
		$this->render ( 'formulario' );
	}
	
	public function salvarAction() {
		
		if (! $this->getRequest ()->isPost ()) {
			$this->_redirect ( './' );
		}
		$lacunasDAO = new Lacunas ( );
		
		$params = new Zend_Filter_Input ( null, null, $this->getRequest ()->getParams () );
		
		$dados = array (
		'id_texto' => $params->id_texto, 
		'palavra' => html_entity_decode($params->palavra),
		'inicio' => $params->inicio,
		'fim' => $params->fim,
		'morfologia' => $params->morfologia,
		'sintaxe' => $params->sintaxe,
		'site' => $params->site,
		'dica' => $params->dica,
		'video' => $params->video
		 );
		
		if (( $_FILES ['som'] ['tmp_name'] )) {
		$dir = BASEPATH."/public/arquivos/sons/texto-" . $params->id_texto;
			if (! is_dir ( $dir )) {
				mkdir ( $dir );
print "mkdir: ".$dir;	
			} else { 
print "nao eh";
print "mkdir: ".$dir;
}
			$arquivo = new Arquivo();
			$arquivo->setDiretorio($dir);
			$arquivo->enviar("som", $_FILES['som']['name']); 
			$dados['som'] = $arquivo->getArquivo();			
		}
		
		if (( $_FILES ['imagem'] ['tmp_name'] )) {
			$dir = BASEPATH."public/arquivos/imagens/texto-" . $params->id_texto;	
			if (! is_dir ( $dir ))
				mkdir ( $dir );
			$foto = new Foto();
			$foto->setDiretorio($dir);
			try {
				$foto->enviar("imagem", $_FILES['imagem']['name']); //Colocar exceção caso não envie
				$foto->redimensionar('640','480');
			} catch (Exception $e) {
				print $e->getMessage();
				exit;
			}
			$dados['imagem'] = $foto->getArquivo();			
		}
				
		if ($params->id) 
			$lacunasDAO->update($dados, $params->id);
		else
			$lacunasDAO->insert($dados);
			
		$this->_redirect('./lacunas/administrar/id/'.$params->id_texto);
	}
	
	public function apagarAction() {
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		$lacunasDAO = new Lacunas();
		$lacuna = $lacunasDAO->find($params->id)->current();
		$lacunasDAO->delete($this->getRequest()->getParam('id'));
		$this->_redirect('./lacunas/administrar/id/'.$lacuna->id_texto);
	}
	
	public function removermidiaAction() {
		$params = new Zend_Filter_Input ( null, null, $this->getRequest ()->getParams () );
		$lacunasDAO = new Lacunas( );
		$lacuna = $lacunasDAO->find ( $params->lacuna )->current ();
		if ($params->tipo == 'som') {
			$dir = BASEPATH."/public/arquivos/sons/texto-" . $lacuna->id_texto . "/" . $lacuna->som;
			$lacunasDAO->update(	array ('som' => ''), $lacuna->id);
			if (file_exists ( $dir ))
				unlink ( $dir );
		} else if ($params->tipo == 'imagem') {
			$dir = BASEPATH."/public/arquivos/imagens/texto-" . $lacuna->id_texto . "/" . $lacuna->imagem;
			$lacunasDAO->update(	array ('imagem' => ''), $lacuna->id);
			if (file_exists ( $dir ))
				unlink ( $dir );
		}
		$this->_redirect('./lacunas/editar/id/'.$lacuna->id);
	}
	
	public function habilitarrecursoAction() {
		$id_texto = (int)$_REQUEST['texto'];
		$recurso = $_REQUEST['recurso'];
				
		$recursosDAO = new Recursos();
		$recursosDAO->insert(array(
		'id_texto' => $id_texto,
		'recurso' => $recurso
		));		
		
		$retorno = array(
		'msg' => 'Recurso de Associação de Lacunas Habilitado!'
		);
							
		print Zend_Json::encode($retorno);
		exit();
	}
	
	public function desabilitarrecursoAction() {
		$id_texto = (int)$_REQUEST['texto'];
		$recurso = $_REQUEST['recurso'];
				
		$recursosDAO = new Recursos();
		$recursosDAO->deleteByRecurso($id_texto,$recurso);
		
		$retorno = array(
		'msg' => 'Recurso de Associação de Lacunas Desabilitado!'
		);
							
		print Zend_Json::encode($retorno);
		exit();
	}
	
	/**
	 * Mostra as dicas da lacuna para o usuario
	 */
	public function verAction() {
		$this->_helper->layout->disableLayout();
		$id_lacuna = (int)$this->getRequest()->getParam("id");
		
		$lacunaDAO = new Lacunas();
		$lacuna = $lacunaDAO->find($id_lacuna)->current();

		$this->view->lacuna = $lacuna;
	}
	
}
